有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

命令行参数的java ArrayIndexOutOfBoundsException

我有以下代码片段:

class CMD{
    public static void main(String[] s){
        String[] spt = s[0].split(".");
        System.out.println(spt[0]);
    }
}

要执行程序,我使用以下命令:

java CMD Test.java

我想程序应该打印Test,但我得到了ArrayIndexOutOfBoundsException
为什么?


共 (2) 个答案

  1. # 1 楼答案

    问题是你正在“分裂”在正则表达式中表示“任意字符”。因此,虽然“任意字符”可以是分隔符,但分割不会返回实际值。(我很惊讶它既不返回空字符串,也不返回几个空字符串,但这是另一回事。)

    如果你逃过了“魔戒”使用反斜杠(然后按字符串文本形式转义反斜杠)可以:

    String[] spt = s[0].split("\\.");
    

    另一种选择(对于这个小程序来说,这是一个巨大的杀伤力,但在现实世界的应用程序中很有用)是使用Guava及其^{}类:

    Splitter splitter = Splitter.on('.');
    Iterable<String> bits = splitter.split(s);
    for (String bit : bits) {
        System.out.println(bit);
    }
    
  2. # 2 楼答案

    使用以下选项,你会得到答案

    java CMD“Test.java”